Parsing a multidimensional object for printing in various runs

ABSTRACT

A first complexity estimate may be generated for a first portion of a multidimensional object. The first complexity estimate may be for use in estimating a complexity of the first portion of the multidimensional object. A printing capability may be determined for the multidimensional printer. The multidimensional printer may be for use in printing the multidimensional object. The printing capability may be compared with the first complexity estimate. A first failure probability estimate may be generated based on the comparing. The failure probability estimate may be for use in determining a likelihood that the multidimensional printer will print the first portion with an accuracy that exceeds an accuracy threshold.

BACKGROUND

This disclosure relates generally to multidimensional printers, and morespecifically, to parsing a multidimensional object schematic to printthe corresponding multidimensional object in various runs.

Multidimensional printing (e.g., 3-dimensional printing) is the processof making multidimensional objects that are derived from a digital file.A user may first generate or select a virtual design schematic (e.g., aComputer Aided Design (CAD)) that corresponds with the multidimensionalobject he or she desires to print. In preparation of printing themultidimensional object, a modeling program may parse the virtual designschematic into hundreds or thousands of horizontal layers. Consequently,when the virtual design is uploaded to the multidimensional printer, themultidimensional printer may read each of the parsed layers andaccordingly print the multidimensional object layer by layer (i.e.,additive manufacturing).

Various printing material mediums (i.e., filaments) and methods may beutilized for multidimensional printing. For example, the filaments maybe plastic, metal, sand, biomaterials, ceramics, or other mediums.Various methods of multidimensional printing include melting orsoftening the filaments to produce the layers (e.g., Selective LaserSintering (SLS), and Fused Deposition Modeling (FDM), etc.). Othermethods include curing and solidifying a liquid medium into a solidmultidimensional object (e.g., Stereolithography, (SLA), etc.).

SUMMARY

One or more embodiments are directed to a computer-implemented method, asystem, and a computer program product. A first complexity estimate maybe generated for a first portion of a multidimensional object. The firstcomplexity estimate may be for use in estimating a complexity of thefirst portion of the multidimensional object. A printing capability maybe determined for the multidimensional printer. The multidimensionalprinter may be for use in printing the multidimensional object. Theprinting capability may be compared with the first complexity estimate.A first failure probability estimate may be generated based on thecomparing. The failure probability estimate may be for use indetermining a likelihood that the multidimensional printer will printthe first portion with an accuracy that exceeds an accuracy threshold.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example multidimensional printer,according to embodiments.

FIG. 2 is a diagram of an example multidimensional printing system thatincludes a computing device and a multidimensional printer, according toembodiments.

FIG. 3 is a flow diagram of an example process for printing amultidimensional object in various runs based on whether any portions ofthe multidimensional object are above a failure probability estimateaccuracy threshold.

FIG. 4 is a flow diagram of an example process for generating acomplexity estimate for portions of a multidimensional object, accordingto embodiments.

FIG. 5 is a flow diagram of an example process for determining aprinting capability of a multidimensional printer, according toembodiments.

FIG. 6 is a diagram of an example multidimensional object schematic,portions of the schematic, and one example of a parsing point.

FIG. 7 is a block diagram of the computing device of FIG. 2, accordingto embodiments.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to parsing a multidimensionalobject schematic to print the corresponding multidimensional object invarious runs. While the present disclosure is not necessarily limited tosuch applications, various aspects of the disclosure may be appreciatedthrough a discussion of various examples using this context.

Multidimensional printing can be costly in terms of filaments used toprint multidimensional objects and the time it takes to print. If asingle portion of a multidimensional object is printed poorly, theentire multidimensional object and time that went into production may bewasted. For example, a multidimensional printer may print a toy actionfigure, but poorly print the details of figure's face. The entire actionfigure may therefore be thrown away. Although a user may melt and reusethe poorly printed multidimensional object, there is still a loss oftime and additional wear on the multidimensional printer. Accordingly,embodiments of the present disclosure are directed to reducing the costsof printing failures by intelligently parsing a multidimensional objectschematic into job segments such that if a printing failure occurs atone portion of the multidimensional object, the printing failure willnot compromise the other successful printing portions.

FIG. 1 is a block diagram of an example multidimensional printer 102,according to embodiments. The multidimensional printer 102 may include acontroller 104 (with a processor 130) that is communicatively coupled toan X-axis motor 106, a Y-axis motor 110, a Z-axis motor 112, an I/Odevice interface 114, a printer bed 122, an extruder 116, and a memoryunit 128. In various embodiments, the multidimensional printer 102 maybe a three dimensional printer, a four dimensional printer, or any othermultidimensional printer. Particularly, the multidimensional printer102, may be any suitable printer type. For example, the multidimensionalprinter 102 may be a 3-D bio printer (e.g., to print human organs), aStereolithography printer (SLA), a Fused Deposition Modeling printer(FDM), a Selective Laser Sintering printer (SLS), a Selective LaserMelting printer (SLM), Electronic Beam Melting printer (EBM), aLaminated Object Manufacturing printer (LOM), or any other suitableprinter. Although FIG. 1 illustrates a particular multidimensionalprinter 102 configuration, it is recognized that other components may beincluded or subtracted, according to various embodiments.

In some embodiments, the controller 104 is configured to control thevarious components of the multidimensional printer 102 (e.g., the X-axismotor 106). The controller 104 may include any combination of softwareand/or processing components suitable for controlling themultidimensional printer 102 components. For example, the controller 104may include a memory to house the parsing module 128, a processor (CPU)130, and/or a microcontroller.

In embodiments, the X-axis motor 106, the Y-axis motor 110, and theZ-axis motor 112 are associated with printer heads configured to controlthe movement of the extruder 116 such that appropriate movements alongeach of the axes may be made to print the multidimensional object. Insome embodiments, the X-axis motor 106, the Y-axis motor 110, and theZ-axis motor 112 are stepper motors, which perform idiosyncraticmovements in increments according to the defined axis. In someembodiments, a stepper motor associated with the printer bed 122 mayassist or provide the movement orientations to print a multidimensionalobject (e.g., the printer bed 122 may be moved in a Z-axis orientationduring runtime).

The I/O device interface 114 provides an interface to any of various I/Odevices or devices of other types, such as a computing device. Forexample, the I/O device interface 114 may be a Universal Serial Bus(USB) port configured to receive a USB cable to a computing device. Insome embodiments, a user may generate or select a CAD multidimensionalobject schematic using a computing device, and transfer the schematic tothe multidimensional printer 102 via the I/O device interface 114.

In some embodiments, the multidimensional printer includes a distinctmemory unit 128 (e.g., a Secure Digital (SD) card). In some embodiments,the memory unit 128 may be included within the controller 104. Inembodiments, the memory unit 128 includes a random-access semiconductormemory, storage device, or storage medium (either volatile ornon-volatile) for storing or encoding data and programs. In someembodiments, the memory unit 128 represents the entire virtual memory ofthe multidimensional printer 102, and may also include the virtualmemory of other computing systems coupled to the multidimensionalprinter 102 or connected via a network. The memory unit 128 may be asingle monolithic entity, but in other embodiments the memory unit 128may include a hierarchy of caches and other memory devices. For example,memory unit 128 may exist in multiple levels of caches, and these cachesmay be further divided by function, so that one cache holds instructionswhile another holds non-instruction data, which is used by a processor.The memory unit 128 may be further distributed and associated withdifferent CPUs or sets of CPUs.

In some embodiments, the memory unit 128 includes a parsing module 120to be executed by the processor 130. The parsing module 120 may beprogram instructions within the memory unit 128 configured to generateat least a first printing complexity estimate of a first portion of amultidimensional object. The parsing module 120 may further determine aprinting capability of the multidimensional printer and compare theprinting capability with the first complexity estimate. And based on thecomparing, a first failure probability estimate may be generated forprinting the first portion of the multidimensional object. In someembodiments, the parsing module 120 is within a computing deviceassociated with the multidimensional printer 102. The operations of theparsing module 120 is further described below.

In embodiments, the extruder 116 is a chamber that receives the filament202 and outputs the filament 202 onto a printing bed in order to printthe multidimensional object. The extruder 116 may include a heatingmodule 130 in order to melt the filament 202. The melted filament 202may be extruded through an extrusion nozzle of the extruder to print themultidimensional object according to the virtual schematics. In someembodiments, the extruder 116 may also include a temperature sensor 118to provide feedback to the controller 104 concerning the temperature ofthe extruder 116 and/or the filament 202. Accordingly, the extruder 116may provide heat regulation such that the viscosity of the filament 202and/or the flow rate of the filament 202 may be adjusted. In someembodiments, the extruder 116 may include a motor configured to push thefilament 202 through the extruder 116 and/or extruder nozzle. In someembodiments, the extruder 116 includes a stepper motor configured toregulate interval movements of the extruder 116 or perform tasks withthe X-axis motor 106, Y-axis motor 110, and/or the Z-axis motor 112 toplace the extruder 116 in a particular orientation.

In some embodiments, the printer bed 122 is a substantially planarplatform on which the multidimensional object is printed on. In someembodiments, the printer bed 122 includes a heating module 126 andtemperature sensor 122 to provide and monitor the temperature of theprinter bed 122. This may be useful for reducing the amount of warpingof a multidimensional object, particularly lower layers. Warping may becaused by uneven cooling of outer and inner sections of a printedmultidimensional object.

FIG. 2 is a diagram of an example multidimensional printing system 200that includes a multidimensional printer and a computing device 230,according to embodiments. The system 200 may include a frame 218, one ormore axis rods 208, an extruder 216, an extruder nozzle 216A, a printerbed 222, filament 202, and corresponding multidimensional object 214,two Z-axis motors 212A and 212B, a Y-axis motor 210, an X-axis motor206, a controller 204, and a computing device 230.

In various embodiments, the filament 202 may be any suitable filament.For example, the filament 202 may be metal, ceramic, composite, plastic,human cells, or any other suitable filament. The type of plasticfilament suitable for the system may be but is not limited to:Acrylonitrile Butadiene Styrene (ABS), Polylactic Acid (PLA), PolyvinylAlcohol (PVA), Polycarbonate (PC), or High-Density Polyethylene (HDPE).

The frame 218 may provide structure for the multidimensional printer andinclude various axis rods 208. The axis rods 208 may provide support andallow the extruder 216 to move in various orientations. For example, theX-axis motor 206 may move the extruder 216 (or a stepping motor withinthe extruder 216 may move the extruder 216) along the axis rod 208(along the X axis) to perform a printing run of the multidimensionalobject 214. In some embodiments, the system 200 need not include theaxis rods 208, as the extruder 216 may move in different orientationsfrom a free-standing position. In some embodiments, the extruder 216 isconfigured analogous to the extruder 116 of FIG. 1. Further, in someembodiments, the controller 204, X-axis motor 206, Z-axis motors 212Aand 212B, the Y-axis motor 210, the printer bed 222 is respectivelyconfigured analogous to the controller 104, X-axis motor 106, Z-axismotor 112, Y-axis motor 110, and the printer bed 122 of FIG. 1. In someembodiments, the computing device 230 may be employed by a user whogenerates a virtual multidimensional object schematic on the computingdevice 230 and transfers the schematic to the controller 204 such thatthe multidimensional printer can print the multidimensional object 214.In some embodiments, the computing device 230 may include the parsingmodule 120 of FIG. 1 such that when the operations of the parsing module120 are completed by the computing device 230, they are fed intomultidimensional printer to process the instructions. In otherembodiments, the multidimensional printer includes the parsing module120 of FIG. 1 such that the computing device 230 may upload a virtualmultidimensional object schematic to the multidimensional printer (e.g.,via the I/O device interface of FIG. 1) and the multidimensional printermay perform the corresponding operations.

FIG. 3 is a flow diagram of an example process 300 for printing amultidimensional object in various runs based on whether any portions ofthe multidimensional object are above a failure probability estimateaccuracy threshold. In some embodiments, the process 300 may start atblock 302 when parsing module (e.g., parsing module 120 of FIG. 1)generates a plurality of printing complexity estimates for respectiveportions of a multidimensional object. For example, the parsing modulemay identify a texture of each portion of the multidimensional objectand calculate a complexity estimate based on the texture. Block 302 isdescribed in more detail below. The parsing module may then, accordingto block 304, determine a printing capability of the multidimensionalprinter. For example, the parsing module may determine a make and model,the individual components, and the filament capability of themultidimensional printer. Block 304 is described in more detail below.

In some embodiments, the parsing module may then, per block 306, comparethe printing capability with the plurality of printing complexityestimates. In some embodiments, the printing capability (block 304) maybe a numerical estimate based on confidence levels and other informationas described herein. Further, the printing complexity estimates (block302) may also be a numerical estimate based on confidence levels. In anillustrative example, comparing of the estimates per block 306 may besimply adding each estimate together, such as a printing complexityestimate of 40 (regarding a first portion) and a printing capability of20.

In some embodiments, the parsing module may then perform block 308 togenerate, based on the comparing, a plurality of failure probabilityestimates for printing the respective portions using themultidimensional printer. The failure probability estimate may be foruse in determining a likelihood that the multidimensional printer willprint the first portion with an accuracy that exceeds an accuracythreshold. In some embodiments, a particular failure probabilityestimate of a portion may be calculated by adding the respectiveprinting complexity estimate for the portion and a printing capability(estimate) of a multidimensional printer. For example, using theillustration above, if for a first portion of a multidimensional object,the printing complexity estimate was 40 and a printing capability was20, then the failure probability estimate may be 60 (40+20=60). In someembodiments, the failure probability estimate may be a percentageprobability of failure (e.g., a confidence level probability of failure)or converted to a percentage probability of failure. For example, usingthe illustration above, the failure probability estimate of 60 maycorrespond to a 60% chance that the multidimensional printer will not beable to successfully print the first portion of the multidimensionalobject. In some embodiments, the failure probability estimate mayinclude or solely be a success probability estimate. Accordingly,instead of or in addition to providing a failure probability estimate, aparsing module may provide a success probability estimate.

In block 310 the parsing module may then determine whether any of thefailure probability estimates exceeds an accuracy threshold. Theaccuracy threshold may be any suitable value for embodiments of thepresent disclosure. For example, using the illustration above, if thefailure probability estimate is a 60% chance of failure, the accuracythreshold may be any failure probability estimates above a 50% chance offailure. Accordingly, 60% would exceed the accuracy threshold of 50%,which means that block 314 would be performed in some embodiments. Inblock 312, if no failure probability estimates are above the accuracythreshold, then the multidimensional printer may print the entiremultidimensional object in a single run. Accordingly, because there isnot a high chance that the multidimensional printer will fail inprinting any portion of the multidimensional object, the entiremultidimensional object may be printed at one time.

If any of the failure probability estimates are above the accuracythreshold then, per block 314, the parsing module may generate parsingpoints associated with the respective portions that exceed the failureprobability estimate accuracy threshold. A parsing point may be alogical point or marker that defines a printing boundary between two ormore portions of a multidimensional object. The parsing point may beplaced on a virtual multidimensional object schematic. The parsing pointmay be utilized by the multidimensional printer as a beginning and/or astopping point to print a corresponding multidimensional object. In anillustrative example, a user may first upload a virtual multidimensionalobject schematic onto a computing device. Before the schematic getsuploaded to the multidimensional printer, the parsing module within thecomputing device may first generate the plurality of failure probabilityestimates and generate corresponding parsing points on the schematic.For example, 2 portions of the multidimensional object schematic may bedeemed to be above the failure probability estimate accuracy threshold.Accordingly, at least one parsing point may be placed on the schematicto define the two portions, as discussed in more detail below.

In some embodiments, the parsing points may not be based solely on whichportions are above the failure probability estimate thresholds, butinclude other dynamic factors. For example, the parsing points may bebased on general portions of the multidimensional object schematic thatshow a relatively high failure probability rate. In an illustrativeexample, a multidimensional object may comprise a first portion, asecond portion, and a third portion. The first portion may be deemed tohave a 50% failure probability estimate, the second portion may have a45% failure probability estimate, and the third portion may have only a10% failure probability estimate. The first portion may be the onlyportion above an accuracy threshold. Accordingly, the parsing point maynot necessarily be placed at a boundary of the first portion to definethe first portion, but may be placed at a boundary of the secondportion, as described in more detail below. In other dynamic factorexamples, the parsing point may be further based on a user's ability toattach different portions of the multidimensional object together. In anillustration, there may be an option to place a parsing point at aboundary of a complex portion of a multidimensional object (e.g., aportion with multiple rivets) or a portion with a smooth surface.However, it may be more difficult to place fasteners at the boundary ofthe complex portion when compared with a boundary of the portion havingthe smooth surface. Accordingly, the parsing point may be placed at theboundary of the portion having a smooth surface portion such thatattaching the portions of the multidimensional object may be easier. Insome embodiments, the parsing point placement may be based on thebonding capability between two filaments, as described above.

In some embodiments, in response to the generation of the parsing pointsper block 314, the multidimensional printer may, per block 316, print inrespective runs, the portions beginning or ending at the parsing points.For example, if a parsing module parsed a virtual multidimensionalobject schematic down the middle of the multidimensional object (e.g.,50% of the multidimensional object schematic is on one side of theparsing point, and 50% of the multidimensional object schematic is onthe other side of the parsing point), then the multidimensional printermay split the printing run into two portions at the parsing point. Forexample, the first 50% of the multidimensional object may be printed ina first run, and the second 50% may be printed in a second run. Asdiscussed above, printing in various runs according to failureprobability estimates may save an entire printing job from being wasted.For example, if a first portion of a multidimensional object was printedsuccessfully, but a second portion was printed unsuccessfully, printingof the second portion only may be repeated as opposed to printing theentire multidimensional object again notwithstanding the printingsuccess of the first portion.

In some embodiments, after at least two portions of a multidimensionalobject are printed in two or more runs, the two portions may be attachedin various manners to form a single multidimensional object. Forexample, the two portions may include internal fasteners to attach thetwo portions.

In some embodiments, in response to the printing per block 316 or block312, the multidimensional printer and/or associated computing device maystore and report information concerning whether the printing failed perblock 318. For example, if the printing is above a satisfactionthreshold (which is discussed in more detail below) that is defined by auser or a program module, then a notification may be displayed to auser's computing device that indicates the printing was successful.Moreover, the information may be stored to the computing device and/ormultidimensional printer such that a printing capability (e.g., block314) history may be stored for a future printing run between the samemultidimensional printer and the same multidimensional object.

FIG. 4 is a flow diagram of an example process 400 for generating acomplexity estimate for portions of a multidimensional object, accordingto embodiments. In some embodiments, the process 400 may be part ofblock 302 as specified in FIG. 3. Process 400 may begin when a parsingmodule (e.g., the parsing module 120 of FIG. 1) performs block 402 toidentify a texture of each portion of a multidimensional objectschematic and score the texture based on the identifying. For example,if a first portion of a multidimensional object comprised various deepgrooves, rivets, and/or protruding shapes, the parsing module mayanalyze the object and may determine that the first portion is complexand a corresponding score may be given to indicate that the texture iscomplex (e.g., a score of 10). Alternatively, a second portion of amultidimensional object may comprise a flat surface. Accordingly, theparsing module may determine that the second portion is not complex anda corresponding score may be given to indicate that the texture is notcomplex (e.g., a score of 1). In these embodiments, texture complexityscores may be based on distance or ratio thresholds between variousfeatures of a portion. For example, a feature of a portion may extend ata distance of 3 inches and vary considerably in shape, which may beabove a threshold. In some embodiments, the multidimensional printer mayinclude models of various texture layouts and associated scores andmatch a current multidimensional object schematic with the models andscore accordingly.

In some embodiments, the parsing module may, per block 404, identify adiameter or thickness associated with each portion of themultidimensional object and provide a score accordingly. For example, ifa portion required that an outside wall be 1/1000 of an inch, (e.g., thethickness of a sheet of paper), the parsing module may analyze theportion of the schematic and determine that the portion is complex andprovide a corresponding score. Thickness complexity scores may be baseddiameter thresholds (e.g., any diameter less than 1/100 of an inch orgreater than 5 inches may be above a threshold and cause a particularscore) or other thresholds.

Per block 406, a parsing module may determine a quantity of starts orstops for each portion of the multidimensional object and scoreaccordingly. For example, a multidimensional object may require printingvarious narrow and elongated protrusions. Accordingly, themultidimensional printer may repeatedly start and stop printing tocomplete the printing of the narrow and elongated protrusions.Complexity scores according to block 406 may be based on start and/orstop threshold quantities.

The parsing module may also, per block 408, determine the degrees ofmovement required of a printer head to print each portion and scoreaccordingly. In some embodiments, block 408 corresponds with block 402to identifying a texture estimate. Accordingly, the parsing module maydetermine a ratio or distance threshold between two features of aportion and therefore calculate the degree of movements needed for theprinter head to print each feature. In some embodiments, movement scoremay not only be based on texture scores, but movement needed to printfeatures on an inner portion of the multidimensional object. In someembodiments, the scores may be based on degree of movement thresholds.

In some embodiments, the parsing module may, per block 410, identifyeach filament type to be used during the multidimensional printing andscore accordingly. Some filaments may be more difficult to print basedon flexibility, viscosity, cooling rate, etc. In some embodiments, theidentifying is based on a user input that specifies what types offilaments are being used and the filament input may be matched against afilament score. In some embodiments, the parsing module or othercomponent may identify filaments based on the melting point of eachfilament, or the point at which filament was dispensed out of theextruder. For example, the extruder may include a temperature sensor, aheater, and a motion sensor to detect when the filament first extrudes.This may allow the multidimensional printer or associated computingdevice to determine at what temperature are particular filamentsextruded out of the nozzle, which may be different depending on thefilaments utilized. In some embodiments, the filament type score may bebased on whether two or more filaments may be easily fused together ifthe multidimensional object requires using two or more filament types.The multidimensional printer or associated computing device may includemodels of filaments pairs with associated scores that specify if thefilament pairs may be easily fused or not easily fused together. In someembodiments, whether filament pairs are easily or not easily fused maybe based on bonding capabilities between the two filaments. In theseembodiments, a user may identify the two filaments, and the parsingmodule may score the pair based on known or a historical bondingcapability between the filaments. In some embodiments, if a filamentpairs is scored as not being able to be easily fused together, the pointat which the filaments fused may be utilized as a potential parsingpoint, as specified above.

In some embodiments, the parsing module may perform block 412 bystatically adding each of the scores that correspond to each of theblocks (402, 404, 406, 408, and 410) to arrive at a final complexityestimate for each feature of the multidimensional object. In someembodiments, the complexity estimate may be dynamic in that some of thescores (e.g., block 410 filament type scores) may be weighted higher(e.g., carry a greater significance) toward the overall complexityestimate or solely be responsible for the overall complexity estimate.In some embodiments, more scores may be utilized for the process 400than illustrated or some scores specified in process 400 may not beincluded in the block 412 complexity estimation.

FIG. 5 is a flow diagram of an example process 500 for determining aprinting capability of a multidimensional printer, according toembodiments. In some embodiments, the process 500 may be a part of block304 of FIG. 3. In embodiments, the process 500 may begin at block 502when a parsing module (e.g., the parsing module 120 of FIG. 1) or othermodule analyzes a multidimensional printer and an associated schematicof a multidimensional object that will be printed by themultidimensional printer.

In some embodiments, the multidimensional printer and/or associatedcomputing device may store a history concerning whether a particularmultidimensional printer has printed a particular multidimensionalobject at a first time prior to a second time. The history may be usefulto determine a printing capability of the multidimensional printer withrespect to the multidimensional object. Moreover, the history may beuseful for generating a failure probability estimate for printing themultidimensional object, as specified in block 308 of FIG. 3.

In some embodiments, per block 504, if the multidimensional printer hasnot printed the multidimensional object before (i.e., there is nohistory), then, per block 508, a parsing module or other component maydetermine a make and model of the multidimensional printer. Further, theparsing module or other component may determine individual components ofthe multidimensional printer (e.g., type of extruder, axis components,etc.). Moreover, a filament suitability may be determined. Accordingly,it may be determined how many different types of filaments may be ableto be printed by the multidimensional printer. In some embodiments, thedeterminations of block 504 may be based on a user input. In someembodiments, the multidimensional printer may store an identificationnumber associated with each of the determined features such that thedetermination can be quickly made. For example, the make and modelidentification number may be stored within the multidimensional printer.

In some embodiments, per block 514, a parsing module or other componentmay determine the multidimensional printer capability for printing theparticular multidimensional object based on the determinations made inblock 508. The printing capability per block 514 may be based oncomparing various features of the multidimensional printer with themultidimensional object schematic (e.g., compare multidimensionalprinter's model and its capabilities with what is required to print afeature of the schematic). In some embodiments, each multidimensionalprinter determination (e.g., make, filament suitability, etc.) mayinclude a score that is added together to form a printing capabilityestimate as specified in block 514.

In some embodiments, if the multidimensional printer has printed themultidimensional object before (there is a history), then per block 506,a determination of whether the multidimensional printer printed themultidimensional object above a satisfaction threshold may be made. Asatisfaction threshold may be a threshold value defined by a user,computing device, and/or multidimensional printer that defines a pointat which the printing between a particular multidimensional printer anda particular multidimensional object was successful. In someembodiments, the satisfaction threshold may be a compilation of accuracythresholds for different portions needed when comparing a printingcapability and a complexity estimate of a portion. The specifying andrecording of whether the printing was successful may be useful forproviding a printing history between the particular multidimensionalprinter and the multidimensional object for future printing runs. Insome embodiments, the satisfaction threshold may be determined by auser, and the user may specify (e.g., via block 414 of FIG. 3) to themultidimensional printer and/or associated computing device whether theprinting was successful. Alternatively, in some embodiments, the parsingmodule or other component may determine whether the printing was above asatisfaction threshold. In these embodiments, the printing satisfactionthreshold may be determined by first scanning a virtual multidimensionalobject schematic and scanning the actual multidimensional object. Theactual multidimensional object may then be compared to the schematic.Accordingly, any deviations within the actual multidimensional objectwhen compared to the schematic may be recorded to eventually provide ascore for determining whether the printing was above a satisfactionthreshold. In some embodiments, the multidimensional printer may haveprinted above a satisfaction threshold at one time, but may have beenbelow the satisfaction threshold at other times. In these embodiments, aparsing module or other component may determine the satisfactionthreshold by determining whether the printing was successful over acertain threshold percentage of time.

In some embodiments, if the printing was above a satisfaction threshold,then per block 512, a parsing module or other component may determinethat the multidimensional printer has a high capability for printing themultidimensional object. In some embodiments, if a high printingcapability is determined then the failure probability estimate forprinting the multidimensional object may not exceed the accuracythreshold (e.g., it is likely that the multidimensional printer willprint the multidimensional object with great accuracy). Accordingly, themultidimensional printer may print an entire multidimensional object ina single run (e.g., block 312 of FIG. 1).

In some embodiments, if the printing was not above a satisfactionthreshold, then per block 510, a parsing module or other component maydetermine that the multidimensional printer has a low printingcapability for printing the current particular multidimensional object.In some embodiments, if a low printing capability is determined, thenthe failure probability estimate for printing the multidimensionalobject may exceed an accuracy threshold. Accordingly, themultidimensional printer may generate parsing points associated with therespective portions of a multidimensional object that were below thesatisfaction threshold. Consequently, the multidimensional printer mayprint in respective runs the portions that are defined by the parsingpoints.

FIG. 6 is a diagram of an example multidimensional object schematic,portions of the schematic, and one example of a parsing point. Themultidimensional object schematic 602 may include portion 602A, portion602B, portion 602C, and a parsing point 604. The multidimensional objectschematic 602 may correspond with how the actual multidimensional objectwill be assessed and printed after receiving the multidimensional objectschematic 602. In an example illustration, the portion 602A may have afailure probability estimate of 80% (e.g., the multidimensional printeris 80% likely to print the multidimensional object with poor accuracy),portion 602B may have a failure probability estimate of 60%, and portion602C may have a failure probability estimate of 10%. The failureprobability estimate accuracy threshold may be any failure probabilityestimate over 50%, which is considered a point at which at least oneparsing point may potentially be created to print in different runs.Using the illustration above, in some embodiments, an additional parsingpoint may be placed under portion 602A (but above 602B) in order for theprinter to print only portion 602A in a single run, as both 602A and602B exceed the failure probability estimate accuracy threshold. Inother embodiments, as illustrated in FIG. 6, only one parsing point 604may be placed under portion 602B (but above portion 602C). Accordingly,because portions 602A and 602B are both above the failure probabilityaccuracy threshold, the multidimensional printer may print both portions602A and 602B in a single run that begins or ends at the parsing point604. Likewise, the multidimensional printer may print portion 602C in asecond run. In some embodiments, portion 602B may be under the failureprobability accuracy threshold, for example 45%. In this example, theparsing point 604 may still be placed under portion 602B becauseportions 602A and 602B together may still exhibit a relatively highfailure probability estimate. Further, generating a single parsing point604 instead of multiple parsing points (e.g., generating a parsing pointunder portion 602A), may save time and resources needed to attach theportions together after they have been printed in various printing runs.

FIG. 7 is a block diagram of the computing device 230 of FIG. 2,according to embodiments. The computing device 230 may be but is notlimited to, personal computer systems, server computer systems, thinclients, thick clients, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputer systems, mainframecomputer systems, and distributed cloud computing environments thatinclude any of the above systems or devices, mobile phones, smartwatches, touch pads, and the like.

The computing device 230 may be described in the general context ofcomputer system-executable instructions, such as program modules, beingexecuted by a computing device (e.g., parsing module 120 of FIG. 1).Generally, program modules may include routines, programs, objects,components, logic, data structures, and so on that perform particulartasks or implement particular abstract data types. Computing device 230may be practiced in distributed cloud computing environments where tasksare performed by remote processing devices that are linked through acommunications network. In a distributed cloud computing environment,program modules may be located in both local and remote computer systemstorage media including memory storage devices.

The components of computing device 230 may include, but are not limitedto, one or more processors 16 or processing units, a system memory 28,and a bus 18 that couples various system components including systemmemory 28 to processor 16.

Bus 18 represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. By way of example, and not limitation,such architectures include Industry Standard Architecture (ISA) bus,Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnects (PCI) bus.

Computing device 230 typically includes a variety of computer systemreadable media. Such media may be any available media that is accessibleby the computing device 230, and it includes both volatile andnon-volatile media, removable and non-removable media.

System memory 28 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 30 and/or cachememory 32. Computing device 230 may further include otherremovable/non-removable, volatile/non-volatile computing device storagemedia. By way of example only, storage system 34 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 18 by one or more datamedia interfaces. As will be further depicted and described below,memory 28 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 40, having a set (at least one) of parsing modules 120,may be stored in memory 28 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. Parsing modules 120 generally carry out the functionsand/or methodologies of embodiments of the invention as describedherein. The parsing module 120 may perform identical functions asdescribed by the parsing module 120 of FIG. 1.

Computing device 230 may also communicate with one or more externaldevices 14 such as a multidimensional printer (e.g., themultidimensional printer 102 of FIG. 1), a keyboard, a pointing device,a display 24, etc.; one or more devices that enable a user to interactwith the computing device 230; and/or any devices (e.g., network card,modem, etc.) that enable the computing device 230 to communicate withone or more other computing devices. Such communication can occur viaInput/Output (I/O) interfaces 22. Still yet, computing device 230 cancommunicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 20. As depicted, network adapter 20communicates with the other components of computer system/server 12 viabus 18. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 12. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

Aspects of the present invention may be a system, a method, and/or acomputer program product. The computer program product may include acomputer readable storage medium (or media) having computer readableprogram code or instructions thereon for causing a processor to carryout aspects of the various embodiments.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofembodiments of the present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of embodiments of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A computer-implemented method, comprising:generating, by a processor within a multidimensional printer, a firstcomplexity estimate of a first portion of a multidimensional object, thegenerating of the first complexity estimate includes generating a firstreal number value of one or more physical structures that are within thefirst portion of the multidimensional object, the real number value is ascore indicating how complex the one or more physical structures are;determining a printing capability of the multidimensional printer,multidimensional printer for use in printing the multidimensionalobject; comparing the printing capability with the first complexityestimate; and generating, by the processor and based on the comparing, afirst failure probability estimate, the failure probability estimate foruse in determining a likelihood that the multidimensional printer willprint the first portion with an accuracy that exceeds an accuracythreshold.
 2. The method of claim 1, further comprising: generating asecond complexity estimate of a second portion of the multidimensionalobject; comparing the printing capability with the second complexityestimate; and generating, based on the comparing the printing capabilitywith the second complexity estimate, a second failure probabilityestimate.
 3. The method of claim 2, further comprising: determining thatthe second failure probability estimate exceeds the accuracy threshold;generating, based on at least the determining that the second failureprobability estimate exceeds the accuracy threshold, at least oneparsing point, the parsing point defining a printing boundary betweenthe first and second portions of the multidimensional object; and inresponse to the generating at least one parsing point, printing in afirst run, by the multidimensional printer, the second portion of themultidimensional object, wherein the printing begins or stops at theparsing point.
 4. The method of claim 3, further comprising, printing ina second run, by the multidimensional printer, the first portion of themultidimensional object, wherein the printing begins or stops at theparsing point.
 5. The method of claim 3, wherein the generating theparsing point is based on at least determining a capability of attachingthe first portion to the second portion.
 6. The method of claim 1,wherein the generating of the first complexity estimate is based on atexture of the first portion, a thickness of the first portion, and aquantity of start and stop movements required of a printer head of themultidimensional printer to print the first portion.
 7. The method ofclaim 1, wherein the generating of the first complexity estimate isbased on degrees of movement required of a printer head to print thefirst portion, and a filament type, the filament being a medium utilizedto print the multidimensional object.
 8. The method of claim 1, whereinthe printing capability is based on the following: a make and model ofthe multidimensional printer or individual components of themultidimensional printer, a history of whether the multidimensionalprinter has exceeded a satisfaction threshold in printing themultidimensional object, and a filament suitability, wherein thefilament suitability corresponds to whether the multidimensional printeris capable of printing the multidimensional object using a particularfilament.
 9. A computer program product comprising a computer readablestorage medium having program instructions embodied therewith, theprogram instructions executable by a processor to: generate, one or morecomplexity estimates for a first portion and a second portion of amultidimensional object based on a physical structure of the firstportion and the second portion, the generating of the one or morecomplexity estimates includes numerically scoring one or more featuresof the first portion and the second portion to indicate how complex thefirst portion and the second portion are; determine a printingcapability of a multidimensional printer, the multidimensional printerfor use in printing the multidimensional object; compare the printingcapability with the one or more complexity estimates to determinewhether the multidimensional printer can print the multidimensionalobject given the one or more complexity estimates; generate, based onthe comparing, one or more failure probability estimates, the one ormore failure probability estimates includes determining a likelihoodthat the multidimensional printer will print the first portion and thesecond portion with an accuracy that exceeds an accuracy threshold; andcause the multidimensional printer to print the first portion in a firstrun and print the second portion in a second run based at least on thewhether the multidimensional printer will print the first portion andthe second portion with the accuracy that exceeds the accuracythreshold.